<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Part I. Overview: thunarx Reference Manual</title>
<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot">
<link rel="home" href="index.html" title="thunarx Reference Manual">
<link rel="up" href="index.html" title="thunarx Reference Manual">
<link rel="prev" href="index.html" title="thunarx Reference Manual">
<link rel="next" href="thunarx-writing-extensions.html" title="Part II. Writing Extensions">
<meta name="generator" content="GTK-Doc V1.33.1 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
<td><img src="up-insensitive.png" width="16" height="16" border="0"></td>
<td><a accesskey="p" href="index.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="thunarx-writing-extensions.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="part">
<div class="titlepage"><div><div><h1 class="title">
<a name="thunarx-overview"></a>Part I. Overview</h1></div></div></div>
<p>
      The Thunar Extension Framework (<code class="systemitem">thunarx</code>) provides
      developers with an easy way to extend the basic functionality provided by
      the <a class="ulink" href="https://docs.xfce.org/xfce/thunar/start" target="_top">Thunar File Manager</a>.
      The <code class="systemitem">thunarx</code> library includes interfaces that can
      be implemented by extensions for various purposes.
    </p>
<p>
      It is based on the <a class="ulink" href="https://developer.gnome.org/gobject/unstable/chapter-gtype.html" target="_top">GLib Dynamic Type
      System</a> and loads the extensions on demand to reduce the system resources
      allocated for the file manager process.
    </p>
<div class="sect1">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="thunarx-overview-goals"></a>Goals</h2></div></div></div>
<p>
        The Thunar Extension Framework was developed with the following goals in mind:
      </p>
<div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
          It should be easy to extend the functionality of the file manager in certain
          ways.
        </li>
<li class="listitem">
          The internals of the file manager should be hidden from the extensions to be
          able to maintain API/ABI compatibility for extensions over various major
          releases of the file manager.
        </li>
<li class="listitem">
          Provide basic compatibility with the <a class="ulink" href="https://www.gnome.org/projects/nautilus/" target="_top">Nautilus</a> Extension Framework,
          so vendors don't need to write several versions of their extensions for the various
          file managers. With the current implementation it should be easy to write a small
          wrapper library for generic extensions that can be loaded into both Thunar and
          Nautilus.
        </li>
<li class="listitem">
          Extensions should not be loaded into memory until they are actually required to
          save system resources. This differs from the way Nautilus handles extensions and
          therefore people that already know how to write Nautilus extensions must be
          careful when writing extensions for Thunar, because Thunar actually unloads the
          extension when it's no longer needed. The <a class="ulink" href="https://developer.gnome.org/gobject/unstable/GTypePlugin.html" target="_top">GTypePlugin</a>
          and <a class="ulink" href="https://developer.gnome.org/gobject/unstable/GTypeModule.html" target="_top">GTypeModule</a>
          sections in the <a class="ulink" href="https://developer.gnome.org/gobject/unstable/" target="_top">GObject
          Reference Manual</a> provide details about the handling of dynamic type plugins.
        </li>
<li class="listitem">
          Permit developers to write extensions in languages other than C.
        </li>
</ol></div>
</div>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.33.1</div>
</body>
</html>